package com.rm.zeyou.pay.wxpay.transfer.vo;

import com.google.gson.annotations.SerializedName;
import com.wechat.pay.java.core.util.GsonUtil;
import lombok.Data;

import java.util.List;

/**
 * 发起商家转账参数
 */
@Data
public class TransferCreateRequest {

    // 是微信开放平台和微信公众平台为开发者的应用程序(APP、小程序、公众号、企业号corpid即为此AppID)提供的一个唯一标识。此处，可以填写这四种类型中的任意一种APPID，但请确保该appid与商户号有绑定关系
    @SerializedName("appid")
    private String appid;

    //【商户单号】 商户系统内部的商家单号，要求此参数只能由数字、大小写字母组成，在商户系统内部唯一
    @SerializedName("out_bill_no")
    private String outBillNo;

    //该笔转账使用的转账场景，可前往“商户平台-产品中心-商家转账”中申请。如：1000（现金营销），1006（企业报销）等
    @SerializedName("transfer_scene_id")
    private String transferSceneId;

    //【收款用户OpenID】 用户在商户appid下的唯一标识。发起转账前需获取到用户的OpenID
    @SerializedName("openid")
    private String openid;

    //【转账备注】 转账备注，用户收款时可见该备注信息，UTF8编码，最多允许32个字符
    @SerializedName("transfer_remark")
    private String transferRemark;

    //【转账金额】 转账金额单位为“分”
    @SerializedName("transfer_amount")
    private Integer transferAmount;

    //【通知地址】 异步接收微信支付结果通知的回调地址，通知url必须为公网可访问的URL，必须为HTTPS，不能携带参数。（选填）
    @SerializedName("notify_url")
    private String notifyUrl;

    /**
     * 【用户收款感知】 （选填）
     * 用户收款时感知到的收款原因将根据转账场景自动展示默认内容。
     * 如有其他展示需求，可在本字段传入。
     * 各场景展示的默认内容和支持传入的内容，可查看产品文档了解。
     */
    @SerializedName("user_recv_perception")
    private String userRecvPerception;

    /**
     * 【转账场景报备信息】 各转账场景下需报备的内容，商户需要按照所属转账场景规则传参，详见转账场景报备信息字段说明。
     * info_type String  信息类型，两条明细中必须分别填写以下两个取值： 活动名称 奖励说明 注：信息类型不可重复填写，请严格按照示例传入
     * info_content String 信息内容，商户自定义内容，如注册会员抽奖一等奖
     */
    @SerializedName("transfer_scene_report_infos")
    private List<TransferSceneReportInfo> transferSceneReportInfos;

    @Override
    public String toString() {
        return GsonUtil.getGson().toJson(this);
    }

}